package come.bjpowernode.javase.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/*
使用FileInputStream和FileOutputStream完成文件的拷贝
拷贝文件的过程是一边读一边写。
使用以上字节流拷贝文件的时候，文件类型随意，万能的，什么样是文件都能拷贝。

 */
public class Copy01 {
    public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;

        try {
            //创建一个输入流对象
            fis = new FileInputStream("C:\\Users\\SUN\\Pictures\\Saved Pictures\\微信图片_20200518210809.jpg");
            //创建一个输出流对象
            fos = new FileOutputStream("C:\\Users\\SUN\\Desktop\\memery.jpg");

            //最核心的一边读一边写
            byte[] bytes = new byte[10 * 1024];
            int readCount = 0;
            while((readCount = fis.read(bytes)) != -1){
                fos.write(bytes,0,readCount);
            }

            //输出流最后要刷新
            fos.flush();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally{

            //分开try，以免一个出现异常影响另一个流的关闭。
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
